/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package educar.abmUsuario;

import educar.models.User;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

/**
 * <hr>
 * Clase AgregarUserController: En esta clase se encuentran los metodos  
 * necesarios para agregar un usuario tanto a la base de datos como a la tabla.
 * <hr>
 * @author Flubber
 */
public class AgregarUserController implements ActionListener {
 
    //Atributo usado para crear una ventana    
    private AgregarUserView agregarUserView;
    
    //Arreglo usado para almacenar los datos del usuario
    private String vector[] = new String[3];
    
    //Atributo usado para almacenar una instancia de UserController
    private UserController userControl;
    
// <editor-fold defaultstate="collapsed" desc="Constructor">
    /**
     * <hr>
     * AgregarUserController(): Constructor de la clase AgregarUserController
     * <hr>
     * @param userController 
     */    
    public AgregarUserController(UserController userController){        
        userControl = userController;
        agregarUserView = new AgregarUserView();
        agregarUserView.setActionListener(this);
    }
 // </editor-fold>

// <editor-fold defaultstate="collapsed" desc="Action setView">    
    /**
     * <hr>
     * setView(): Este metodo hace visible a una ventana.
     * <hr>
     */
    public void setView() {
        agregarUserView.setVisible(true);
    }
// </editor-fold>  

// <editor-fold defaultstate="collapsed" desc="Metodos ActionPermormed">    
    /**
     * <hr>
     * actionPerformed(): Este metodo recibe el evento de un boton.
     * Boton CANCELAR cierra la ventana.
     * Boton ACEPTAR agrega el usuario a la base de datos y a la tabla.
     * <hr>
     */    
    @Override
    public void actionPerformed(ActionEvent e) {
        //Evalua la procedencia del evento del boton        
        Object source = e.getSource();
        if (agregarUserView.getJbCancelar() == source){ //Boton Cancelar
            agregarUserView.dispose();
        }
        if (agregarUserView.getJbAceptar() == source){  //Boton Aceptar
            vector[0] = agregarUserView.getUsuario(); 
            vector[1] = agregarUserView.getPassword();
            vector[2] = agregarUserView.getRole();
            if (!((vector[0].length() == 0) || (vector[1].length() == 0))) { 
                User user = new User(vector);
                if (user.save()) {                           
                            userControl.agregarATabla(vector);
                            agregarUserView.dispose();
                } else {     //El usuario ya existe
                    JOptionPane.showMessageDialog(null,"Ya existe un registro con el nombre de usuario "+ agregarUserView.getUsuario()+".","proyecto 2012",JOptionPane.WARNING_MESSAGE);
                }
            } else {    //No se ingresaron todos los datos de el usuario
                JOptionPane.showMessageDialog(null,"Existe al menos un campo sin completar.\n\nRevise los campos ingresados","proyecto 2012",JOptionPane.WARNING_MESSAGE);
            }
        }
    }//Fin del metodo actionPerformed().    
// </editor-fold>

}//Fin de la clase AgregarUserController
